const { override, fixBabelImports, addWebpackAlias, addPostcssPlugins, addLessLoader, adjustStyleLoaders } = require('customize-cra')
const path = require('path')
// 默认主题样式变量：node_modules\antd-mobile\es\style\themes\default.less
const theme = require('./theme.json')
module.exports = override(
    fixBabelImports('import', {
        libraryName: 'antd-mobile',
        style: true
    }),
    // 添加路径别名
    addWebpackAlias({
        ['@']: path.resolve(__dirname, 'src')
    }),
    // 自定义主题
    addLessLoader({
        lessOptions: {
            javascriptEnabled: true,
            modifyVars: theme
        }
    }),
    // 添加postcss插件
    addPostcssPlugins(
        [
            require('postcss-px-to-viewport')({
                unitToConvert: "px", // 要转化的单位
                viewportWidth: 375, // UI设计稿的宽度
                unitPrecision: 6, // 转换后的精度，即小数点位数
                propList: ["*"], // 指定转换的css属性的单位，*代表全部css属性的单位都进行转换
                viewportUnit: "vw", // 指定需要转换成的视窗单位，默认vw
                fontViewportUnit: "vw", // 指定字体需要转换成的视窗单位，默认vw
                selectorBlackList: [], // 指定不转换为视窗单位的类名，
                minPixelValue: 1, // 默认值1，小于或等于1px则不进行转换
                mediaQuery: true, // 是否在媒体查询的css代码中也进行转换，默认false
                replace: true, // 是否转换后直接更换属性值
                exclude: [],
                // exclude: [/node_modules/], // 设置忽略文件，用正则做目录名匹配
                landscape: false // 是否处理横屏情况
            })
        ]
    ),
    // 配置全局sass文件，可以无需引用便可使用
    adjustStyleLoaders(rule => {
        if (rule.test.toString().includes('scss')) {
            rule.use.push({
                loader: require.resolve('sass-resources-loader'),
                options: {
                    resources: [
                        './src/assets/style/global.scss'
                    ]
                }
            })
        }
    })
)